#ifndef MYTCPPROGRESS_H
#define MYTCPPROGRESS_H

#include <QObject>
#include <QTcpSocket>
#include <QTimer>
#include <QMessageBox>
#include <QTime>
#include <QHostAddress>
#include <QFile>
#include <QHostAddress>

class mytcpprogress : public QObject
{
    Q_OBJECT
public:
    explicit mytcpprogress(QObject *parent = nullptr);
    ~mytcpprogress();

    int index;//当前进程在主线程的进程列表中的索引

    QString m_peerAddress;//用于记录对方地址

signals:

    void newMessage(QByteArray recData,int index);//当接收到新数据时发送此信号

    void connected(QString address,int index);//当套接字连接成功时发送此信号

    void disconnected(QString peerAddress ,int index);//当套接字连接断开时发送此信号



private:

    QTcpSocket* m_tcpSocket;//用于创建套接字连接的函数

    QTimer* m_aliveTimer;//保活计时器,检查套接字连接





public slots:
    void on_newConnect_join(qintptr socket,int);//初始化新加入的连接

    void on_message_send(QByteArray sendData,int index);//当主线程控制发送信息时的响应函数

    void on_timer_out();//用于响应保活计时器的槽函数

    void on_message_readyread();//当tcp套接字有消息可读时的响应槽函数

    void onNewTcpServiceProgress(QString address,int port,int index);//响应主线程创建tcp客户端子线程的槽函数

    void asTcpServiceConnect();//当作为tcp客户端连接成功时

    void onGotoDisconnect();//用于响应主线程主动断开连接的槽函数

    void onGotoDisconnect(int index);//用于响应主线程主动断开连接的带参槽函数

};

#endif // MYTCPPROGRESS_H
